package com.googlecode.dgwt.client.dojo;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


/**
 * Provê suporte a herança múltipla.
 * 
 * @author      Wellington Tadeu dos Santos
 * @since       DGWT v0.01
 */
public interface Feature {
    
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @Documented
    public @interface Inherits {
        Class<?> value(); 
    }
    
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD, ElementType.FIELD})
    @Documented
    public @interface SuperClass {
        Class<?> value() default Feature.class;
    }


    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Documented
    public @interface MainClass {
    }
    
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    @Documented
    public @interface Constructor {
    }

    
    public interface ClassType {
        
        public Class<?> getMainClass();
        
        //public Class<?>[] getInterfaces();
        
        //public Class<Feature>[] getSuperClasses();
        
    }

}
